package com.kt.common.clazz.seal

fun main() {

}

/**
 * 这种涵盖了所有情况 ，when表达式所以不需要else
 * Expr 的子类只能在 Expr 同一个文件才能申明
 */
fun eval(expr: Expr):Double = when(expr){
    is Const -> expr.number
    is Sum -> eval(expr.e1) +  eval(expr.e2)
    NotANumber -> Double.NaN
    is IsANumber -> Double.NaN
}